﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Capa_Entidad;

namespace Acceso_Datos.Clases_DAO
{
    public class clsGen_DiagnosticoDAO
    {
        private BDClinicaEntities ContextoDeObjs = new BDClinicaEntities();
        public bool Insertar(GEN_DIAGNOSTICO Obj)
        {
            try
            {   ContextoDeObjs.AddObject("GEN_DIAGNOSTICO", Obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return true;
        }
        public bool Modificar(GEN_DIAGNOSTICO obj)
        {
            try
            {   ContextoDeObjs.AttachTo("GEN_DIAGNOSTICO", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;                
            }
            return true;
        }
        public bool Eliminar(GEN_DIAGNOSTICO obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("GEN_DIAGNOSTICO", obj);
                ContextoDeObjs.DeleteObject(obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return true;
        }
        public IEnumerable<Object> listar()
        {
            IEnumerable<Object> lista = new List<Object>();
            try
            {
                
                var q = from c in ContextoDeObjs.GEN_DIAGNOSTICO
                        join t in ContextoDeObjs.GEN_DIAGNOSTICO_CATEGORIA on c.DICA_ID_DIAGNOSTICO_CATEGORIA.Value equals t.DICA_ID_DIAGNOSTICO_CATEGORIA
                        join g in ContextoDeObjs.GEN_DIAGNOSTICO_GRUPO on t.DIG_ID_DIAGNOSTICO_GRUPO.Value equals g.DIG_ID_DIAGNOSTICO_GRUPO
                        join p in ContextoDeObjs.GEN_DIAGNOSTICO_CAPITULO on g.DIC_ID_DIAGNOSTICO_CAPITULO.Value equals p.DIC_ID_DIAGNOSTICO_CAPITULO
                        select new {

                            c.DIA_ID_DIAGNOSTICO,
                            c.DIA_DESCRIPCION,
                            c.DIA_CODIGO_CIE10,
                            c.DICA_ID_DIAGNOSTICO_CATEGORIA,
                            DES_CATEGORIA=t.DICA_DESCRIPCION,
                            DES_GRUPO=g.DIG_DESCRIPCION,
                            DES_CAPITULO=p.DIC_DESCRIPCION
                        }; 



                lista = q.ToList();
              
            }
            catch (Exception ex)
            {                
                throw ex;
            }            
        return lista;
        }






        public int UltimoNumero()
        {
            int max = 0;
            try
            {
                max = ContextoDeObjs.GEN_DIAGNOSTICO.Select(x => x.DIA_ID_DIAGNOSTICO).Max();                
            }
            catch (Exception)
            {
                return max;
            }
            return max;
        }
    }
}
